package com.qumitech.visualnovel.service.voiceRoom;

import com.qumitech.visualnovel.model.common.BaseRsp;
import com.qumitech.visualnovel.controller.vo.player.UserResetRecordVO;
import com.qumitech.visualnovel.controller.vo.player.UserResetVO;
import com.qumitech.visualnovel.model.dao.console.VoiceRoomProfitDO;
import com.qumitech.visualnovel.model.dao.console.VoiceRoomPropertyChangeDO;
import com.qumitech.visualnovel.pubdef.dto.voiceroom.*;
import com.qumitech.visualnovel.pubdef.dto.voiceroom.query.VoiceRoomAdminQueryDTO;
import com.qumitech.visualnovel.pubdef.dto.voiceroom.query.VoiceRoomProfitQueryDTO;
import com.qumitech.visualnovel.pubdef.dto.voiceroom.query.VoiceRoomPropertyChangeQueryDTO;
import com.qumitech.visualnovel.pubdef.dto.voiceroom.query.VoiceRoomSupplementQueryDTO;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface VoiceRoomManageService {


    BaseRsp listVoiceRoom(VoiceRoomAdminQueryDTO queryDTO);
    BaseRsp updateVoiceRoom(VoiceRoomAdminUpdateDTO updateDTO);

    List<VoiceRoomPropertyChangeDO> listVoiceRoomPropertyChange(VoiceRoomPropertyChangeQueryDTO queryDTO);
    Integer countVoiceRoomPropertyChange(VoiceRoomPropertyChangeQueryDTO queryDTO);


    VoiceRoomProfitStatistic getVoiceRoomProfitStatistic(String roomId);
    List<VoiceRoomProfitDO> listVoiceRoomProfit(VoiceRoomProfitQueryDTO queryDTO);
    Integer countVoiceRoomProfit(VoiceRoomProfitQueryDTO queryDTO);

    BaseRsp listVoiceRoomRebateWithdraw(RebateWithdrawQueryDTO queryDTO);

    BaseRsp verifyVoiceRoomRebateWithdraw(RebateWithdrawUpdateDTO updateDTO);

    BaseRsp updateVoiceRoomRebateSupplement(RebateAddDTO addDTO);

    List<VoiceRoomRebateSupplementDTO> listVoiceRoomRebateSupplement(VoiceRoomSupplementQueryDTO queryDTO);
    Integer countVoiceRoomRebateSupplement(VoiceRoomSupplementQueryDTO queryDTO);

    BaseRsp listRebateConfig(String roomId);

    BaseRsp updateVoiceRoomRebate(VoiceRoomRebateUpdateDTO updateDTO);



    BaseRsp listDefaultConfig();
    BaseRsp updateDefaultConfig(VoiceRoomDefaultConfigDTO updateConfigDTO);
    BaseRsp deleteDefaultConfig(long defaultConfigId);
    BaseRsp addDefaultConfig(VoiceRoomDefaultConfigDTO addConfigDTO);

    BaseRsp getVoiceRoomType();

    BaseRsp getVoiceRoomRebateBill(VoiceRoomRebateBillAdminQueryDTO queryDTO);

    BaseRsp changeVoiceRoomRebate(VoiceRoomRebateAdminDTO roomRebateAdminDTO);

    BaseRsp getVoiceRoomReset(String roomId);

    BaseRsp resetVoiceRoom(UserResetVO userResetVO);

    BaseRsp getVoiceRoomResetRecords(UserResetRecordVO resetRecordVO);
}
